package com.tarzan.system.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.tarzan.api.model.request.role.*;
import com.tarzan.api.model.response.role.SysRoleInfoResp;
import com.tarzan.api.model.response.role.SysRoleVo;
import com.tarzan.api.model.response.user.SysUserInfoResp;
import com.tarzan.system.entity.SysRole;
import com.tarzan.system.entity.SysUser;

import java.util.List;

/**
 * @Package com.tarzan.system.service
 * @Title ISysRoleService
 * @Description TODO
 * @Author liujinshan
 * @CreateTime 2021/6/29 15:52
 */
public interface ISysRoleService  extends IService<SysRole> {

    /**
     * 根据id 查询角色信息
     * @param sysRoleIdReq
     * @return
     */
    SysRoleInfoResp getRoleInfoById(SysRoleIdReq sysRoleIdReq);

    /**
     * 分页查询角色信息
     * @param roleInfoReq
     * @return
     */
    IPage<SysRoleInfoResp> getPageRoleInfo(SysRoleInfoReq roleInfoReq);

    /**
     * 添加角色
     * @param insertRoleReq
     */
    void insert(InsertRoleReq insertRoleReq);

    /**
     * 更新角色信息
     * @param updateRoleInfoReq
     */
    void upadte(UpdateRoleInfoReq updateRoleInfoReq);

    /**
     * 删除角色信息
     * @param sysRoleIdReq
     */
    void delete(SysRoleIdReq sysRoleIdReq);

    /**
     * 根据角色查询该角色未被分配的用户
     * @param req
     * @return
     */
    IPage<SysUserInfoResp> findUnallocatedUserByRoleID(FindUnallocatedUserReq req);

    /**
     * 查询角色信息，根据用户id
     * @param user
     * @return
     */
    List<SysRole> findRoleByUserId(SysUser user);

    List<SysRoleVo> findAllRoleInfo();

}
